home *** CD-ROM | disk | FTP | other *** search
-
-
-
- DDDDSSSSVVVVDDDDCCCC((((3333FFFF)))) DDDDSSSSVVVVDDDDCCCC((((3333FFFF))))
-
-
-
- NNNNAAAAMMMMEEEE
- DSVDC - DSVDC is a subroutine to reduce a double precision NxP matrix X
- by orthogonal transformations U and V to diagonal form. The diagonal
- elements S(I) are the singular values of X. The columns of U are the
- corresponding left singular vectors, and the columns of V the right
- singular vectors.
-
-
- SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
- SUBROUTINE DSVDC(X,LDX,N,P,S,E,U,LDU,V,LDV,WORK,JOB,INFO)
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- On Entry
-
- XXXX DOUBLE PRECISION(LDX,P), where LDX .GE. N.
- X contains the matrix whose singular value
- decomposition is to be computed. X is
- destroyed by DSVDC.
-
- LLLLDDDDXXXX INTEGER.
- LDX is the leading dimension of the array X.
-
- NNNN INTEGER.
- N is the number of columns of the matrix X.
-
- PPPP INTEGER.
- P is the number of rows of the matrix X.
-
- LLLLDDDDUUUU INTEGER.
- LDU is the leading dimension of the array U.
- (See below).
-
- LLLLDDDDVVVV INTEGER.
- LDV is the leading dimension of the array V.
- (See below).
-
- WWWWOOOORRRRKKKK DOUBLE PRECISION(N).
- WORK is a scratch array.
-
- JJJJOOOOBBBB INTEGER.
- JOB controls the computation of the singular
- vectors. It has the decimal expansion AB
- with the following meaning
- A .EQ. 0 do not compute the left singular
- vectors.
- A .EQ. 1 return the N left singular vectors
- in U.
- A .GE. 2 return the first MIN(N,P) singular
- vectors in U.
- B .EQ. 0 do not compute the right singular
- vectors.
- B .EQ. 1 return the right singular vectors
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- DDDDSSSSVVVVDDDDCCCC((((3333FFFF)))) DDDDSSSSVVVVDDDDCCCC((((3333FFFF))))
-
-
-
- in V. On Return
-
- SSSS DOUBLE PRECISION(MM), where MM=MIN(N+1,P).
- The first MIN(N,P) entries of S contain the
- singular values of X arranged in descending
- order of magnitude.
-
- EEEE DOUBLE PRECISION(P).
- E ordinarily contains zeros. However see the
- discussion of INFO for exceptions.
-
- UUUU DOUBLE PRECISION(LDU,K), where LDU .GE. N.
- If JOBA .EQ. 1, then K .EQ. N.
- If JOBA .GE. 2, then K .EQ. MIN(N,P).
- U contains the matrix of right singular vectors.
- U is not referenced if JOBA .EQ. 0. If N .LE. P
- or if JOBA .EQ. 2, then U may be identified with X
- in the subroutine call.
-
- VVVV DOUBLE PRECISION(LDV,P), where LDV .GE. P.
- V contains the matrix of right singular vectors.
- V is not referenced if JOB .EQ. 0. If P .LE. N,
- then V may be identified with X in the
- subroutine call.
-
- IIIINNNNFFFFOOOO INTEGER.
- The singular values (and their corresponding
- singular vectors) S(INFO+1),S(INFO+2),...,S(M)
- are correct (here M=MIN(N,P)). Thus if
- INFO .EQ. 0, all the singular values and their
- vectors are correct. In any event, the matrix
- B = TRANS(U)*X*V is the bidiagonal matrix
- with the elements of S on its diagonal and the
- elements of E on its super-diagonal (TRANS(U)
- is the transpose of U). Thus the singular
- values of X and B are the same. LINPACK. This version dated 03/19/79
- . G. W. Stewart, University of Maryland, Argonne National Lab.
-
- DDDDSSSSVVVVDDDDCCCC uses the following functions and subprograms. External DROT BLAS
- DAXPY,DDOT,DSCAL,DSWAP,DNRM2,DROTG Fortran DABS,DMAX1,MAX0,MIN0,MOD,DSQRT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-